//
// Created by bbnf on 09.06.2024.
//

#include <storage/todo_loader.h>

#include "storage_pch.h"

namespace TodoApp::Storage {

    FileTodoLoader::FileTodoLoader(std::filesystem::path path) {
        assert(path.is_absolute());
        m_path = std::move(path);
#ifndef NDEBUG
        LOG_LEVEL(LOG_LEVEL_DEBUG);
#endif
    }




    TxtTodoLoader::TxtTodoLoader(std::filesystem::path path) : FileTodoLoader(std::move(path)) {
        m_parser = new FileStorage::TxtFileParser(FileTodoLoader::path());
    }

    TxtTodoLoader::~TxtTodoLoader() {
        delete m_parser;
    }

    auto TxtTodoLoader::loadTodos() -> std::vector<Todo *> {
        auto dto_list = m_parser->parse();
        auto todos = std::vector<Todo *>();
        for (const auto &dto: dto_list) {
            auto *todo = new Todo(dto.title, dto.description);
            todo->setDone(dto.done);
            todo->setDoneTime(dto.done_time);
            todo->setPriority(dto.priority);
            todos.push_back(todo);
        }
        return todos;
    }

} // namespace TodoApp::Storage
